Computer systems typically comprise a combination of computer programs and hardware, such as semiconductors, transistors, chips, circuit boards, storage devices, and processors. The computer programs are stored in the storage devices and are executed by the processors.
Computers typically comprise a hierarchy of storage devices, with some storage devices being relatively smaller, faster, and more expensive while other storage devices are relatively larger, slower, and less expensive (on a per storage unit basis). Some of these storage devices are volatile, meaning that they lose their data when electrical power is interrupted while other storage devices are non-volatile, meaning that they retain their data across electrical power interruptions. The processors typically execute instructions stored in the smaller, faster, volatile storage devices, so programs are copied from the larger, slower non-volatile storage devices, in order to execute.
When a computer initially receives electrical power, a program called a boot loader executes and performs a bootstrap, boot up, boot load, or IPL (Initial Program Load) sequence, which copies programs or portions of programs, such as an operating system and device drivers, from the larger, slower non-volatile storage devices to the smaller, faster volatile storage devices and starts them executing. Once this IPL sequence is complete, the operating system and device drivers are executing and ready to respond to requests from other programs, which are called applications. The programs may execute on the processor in threads and own and wait for locks on shared resources.